perm filename FLIST.SAI[SYS,HE]1 blob
sn#020396 filedate 1973-01-18 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 BEGIN "FLIST"
00005 ENDMK
⊗;
BEGIN "FLIST"
REQUIRE 5000 STRING_SPACE;
STRING COM, FILE, PAGE, FP, LP, T, LIN;
DEFINE CR="'15", LF="'12", FF="'14", DSK="1", LPT="2";
INTEGER BRK, EOF, FLG, FL, LL, L, COUNT, LOC;
LABEL LOOP, NXTSET;
SIMPLE PROCEDURE GET;
BEGIN
PAGE ← INPUT(DSK,4);
IF LOC THEN
BEGIN
T ← PAGE;
LIN ← SCAN(T,3,BRK);
END ELSE LIN←PAGE;
L ← LENGTH(LIN);
COUNT ← COUNT+1;
IF LIN[∞ FOR 1]=LF THEN L←L-2;
IF ¬(COUNT MOD 5) THEN OUTSTR(" "&CVS(COUNT));
END;
SIMPLE BOOLEAN PROCEDURE TEST(STRING PN; INTEGER PL);
RETURN(PL>0∧L≥PL∧EQU(PN,LIN[L+1-PL FOR PL]));
COUNT ← 0;
SETBREAK(1," ",NULL,"I");
SETBREAK(2," →",NULL,"I");
SETBREAK(3,LF,CR,"I");
SETBREAK(4,FF,NULL,"I");
LOOP: OUTSTR(CR&LF&"*");
COM ← INCHWL;
DO FILE←SCAN(COM,1,BRK) UNTIL LENGTH(FILE)∨¬LENGTH(COM);
IF ¬LENGTH(FILE) THEN GO TO LOOP;
OPEN(DSK,"DSK",0,6,0,10000,BRK,EOF←FALSE);
LOOKUP(DSK,FILE,FLG);
IF FLG THEN
BEGIN
OUTSTR(FILE&" NOT FOUND");
GO TO LOOP;
END;
OPEN(LPT,"LPT",0,0,6,0,BRK,EOF←FALSE);
ENTER(LPT,"FLIST.LST",FLG);
DO BEGIN
OUTSTR("FIRST OR LAST LINE (L OR F)?");
LOC ← INCHWL;
END UNTIL LOC="F"∨LOC="L";
LOC ← LOC="F";
NXTSET: DO FP←SCAN(COM,2,BRK) UNTIL LENGTH(FP)∨BRK="→"∨¬BRK;
FL ← LENGTH(FP);
IF BRK="→" THEN
BEGIN
DO LP←SCAN(COM,1,BRK) UNTIL LENGTH(LP)∨¬BRK;
LL ← LENGTH(LP);
END ELSE LL ← -1;
GET;
IF FL THEN WHILE ¬(EOF∨TEST(FP,FL)) DO GET;
DO BEGIN
OUT(LPT,PAGE&FF);
IF EOF∨LL=-1 THEN DONE;
GET;
END UNTIL TEST(LP,LL);
IF ¬EOF∧LENGTH(COM) THEN GO TO NXTSET;
RELEASE(LPT);
RELEASE(DSK);
GO TO LOOP;
END "FLIST";